package com.itheima.collection_demo.iterator_demo;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
    ConcurrentModificationException : 并发修改异常

    产生的原因 : 迭代器遍历集合 , 但是采用了集合对象修改了集合的长度(删除 , 添加)

    解决方案 ;
        1 迭代器遍历 , 迭代器修改
        2 不使用迭代器 , 普通for循环


    Iterator迭代器
        public interface ListIterator<E>  extends Iterator<E> : 注意 : 此列表迭代器只能使用在List体系
 */
public class Demo2 {
    public static void main(String[] args) {
        ArrayList<String> c = new ArrayList<>();

        c.add("貂蝉");
        c.add("小乔");
        c.add("大乔");
        c.add("尚香");

//        for (int i = 0; i < c.size(); i++) {
//            String s = c.get(i);
//            // 如果集合中元素存在小乔
//            if (s.equals("小乔")) {
//                // 使用集合对象添加一个元素
//                c.add("甄宓");
//            }
//        }
//
//        System.out.println(c);


//        // 迭代器遍历集合
//        Iterator<String> it = c.iterator();
//        while (it.hasNext()) {
//            // 拿到每一个元素
//            String s = it.next();
//            // 如果集合中元素存在小乔
//            if (s.equals("小乔")) {
//                // 使用集合对象添加一个元素
//                c.add("甄宓");
//            }
//        }


        // 迭代器遍历集合
        // 1 迭代器遍历 , 迭代器修改
        //
        Iterator<String> it = c.iterator();
        while (it.hasNext()) {
            // 拿到每一个元素
            String s = it.next();
            // 如果集合中元素存在小乔
            if (s.equals("小乔")) {
                // 使用集合对象添加一个元素
                c.set(1 , "甄宓");
            }
        }

        System.out.println(c);

    }
}
